package com.lg.concurrent.interrupt;

import lombok.SneakyThrows;

/**
 * 如何优雅的结束一个线程
 * 调用 线程的 interrupt方法，改变线程中的volatile 标志位
 *  线程中需要自己去不断的判断这个 标志位，执行相应的逻辑
 *
 */
public class Base {
    @SneakyThrows
    public static void main(String[] args) {
        T t = new T();
        t.start();
        Thread.sleep(1000);
        t.interrupt();
    }
}

class  T extends Thread{
    @SneakyThrows
    @Override
    public void run() {
        System.out.println("T start");
        int n = 0;
//        isInterrupted 判断自己的标志位，并不会重置标志位
        while (!isInterrupted()){
            System.out.println("n = "+ (n++));
//            Thread.sleep(1000);
        }
        System.out.println("T end");
    }
}
